//
// pipes.cpp
// libprotea
// Tools Library for the Protea Project / OS pipe functionality
// Copyright (C) 2003, 2004, 2005 eXegeSys, Inc.
// Copyright (C) 2008 Bruce A. James
//
// This program is part of the Protea Project.
//
// The Protea Project is free software; you can redistribute it and/or modify it 
// under the terms of the GNU General Public License as published by the 
// Free Software Foundation, either version 3 of the License, or (at your 
// option) any later version.
//
// The Protea Project is distributed in the hope that it will be useful, but 
// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 
// for more details.
// 
// You should have received a copy of the GNU General Public License along 
// with this program.  If not, see <http://www.gnu.org/licenses/>.
// 
// Please send correspondence to:
// 
// theproteaproject@gmail.com
//

#include "../defines.h"
#include "pipes.h"
#include "../AppHandler/AppInterface.h"
#include "socket.h"

XCPipeTransport::XCPipeTransport( XCAppInterface* app_owner, XCMsgPort* port_owner ) :
	XCTransport( app_owner, port_owner )
{

	INFUNC( XCPipeTransport::XCPipeTransport, app_owner )
	OUTFUNC();
};

XCPipeTransport::XCPipeTransport( XCAppInterface* app_owner, PORT_HANDLE in, PORT_HANDLE out, XCMsgPort* port_owner ) :
	XCTransport( app_owner, port_owner ) 
{
	INFUNC( XCPipeTransport::XCPipeTransport, app_owner )

	if (app_owner)
		app_owner->ToolsTrace( TRC_TRAFFIC, TLV_HIGH, "In: %ld, out: %ld", in, out );

	mPipes[ TOOL_PIPE_READ ] = in;
	mPipes[ TOOL_PIPE_WRITE ] = out;

	OUTFUNC();
};

XCPipeTransport::~XCPipeTransport() {
};

void XCPipeTransport::SetOutPipe( PORT_HANDLE new_pipe ) {
	mPipes[ TOOL_PIPE_WRITE ] = new_pipe;
	if (myapp)
		myapp->ToolsTrace( TRC_TRAFFIC, TLV_HIGH, "In: %ld, out: %ld", mPipes[ TOOL_PIPE_READ ], mPipes[ TOOL_PIPE_WRITE ] );
};

PORT_HANDLE XCPipeTransport::GetInHandle() {
	return mPipes[ TOOL_PIPE_READ ];
};

PORT_HANDLE XCPipeTransport::GetOutHandle() {
	return mPipes[ TOOL_PIPE_WRITE ];
};
